﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Otgruzka.ServicesClients;
using BusinessLogic.Security;
using System.IO;
using Otgruzka.Helpers;

namespace Otgruzka.WebForms
{
    public partial class UploadImageProduct : System.Web.UI.Page
    {
        protected int ProductId
        {
            get
            {
                try
                {
                    return (Request.QueryString["pid"] != null) ? Convert.ToInt32(Request.QueryString["pid"]) : 0;
                }
                catch (Exception ex)
                {
                    return 0;
                }
            }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
        }

        protected void SaveImgButton_Click(object sender, EventArgs e)
        {
            string pathToSaveBigImage = Server.MapPath("~/Images/products/big/");
            string pathToSaveSmallImage = Server.MapPath("~/Images/products/small/");

            var obig = Request.QueryString["big"];
            var osmall = Request.QueryString["small"];
            string big = string.Empty;
            string small = string.Empty;
            if (obig != null)
                big = obig.ToString();
            if (osmall != null)
                small = osmall.ToString();

            if (ProductId > 0)
            {
                var uploader = this.FindControl("NewImageUpload") as FileUpload;
                if (uploader != null)
                {
                    if (uploader.HasFile)
                    {
                        #region Удаление старого файла
                        if (!string.IsNullOrEmpty(big))
                        {
                            big = big.Substring(big.LastIndexOf("/"));
                            if (!string.IsNullOrEmpty(big)) // Удаление старого большого файла
                            {
                                try
                                {
                                    FileInfo TheFile = new FileInfo(pathToSaveBigImage + big);
                                    if (TheFile.Exists)
                                        TheFile.Delete();
                                }
                                catch (Exception ex)
                                { }
                            }
                        }
                        if (!string.IsNullOrEmpty(small))
                        {
                            small = small.Substring(small.LastIndexOf("/")); // Удаление старого малого файла
                            if (!string.IsNullOrEmpty(small))
                            {   
                                try
                                {
                                    FileInfo TheFile = new FileInfo(pathToSaveSmallImage + small);
                                    if (TheFile.Exists)
                                        TheFile.Delete();
                                }
                                catch (Exception ex)
                                { }
                            }
                        }
                        #endregion Удаление старого файла

                        #region Сохранение нового файла
                        var client = new ProductsClient();
                        try
                        {
                            string imgBig = pathToSaveBigImage;
                            string imgSmall = pathToSaveSmallImage;
                            
                            #region //Вариант с именем файла, равным ID товара
                            // Выбирается расширение файла
                            string ext = (uploader.FileName.Length >= uploader.FileName.LastIndexOf('.')) ? uploader.FileName.Substring(uploader.FileName.LastIndexOf('.')) : "";
                            
                            // Сохраняется BIG-версия файла, т.е. файл в исходном состоянии
                            uploader.PostedFile.SaveAs(imgBig + string.Format("{0}_big{1}", ProductId, ext));

                            // Сохраняется SMALL-версия файла, т.е. миниатюра
                            //uploader.PostedFile.SaveAs(imgSmall + string.Format("{0}_small{1}", ProductId, ext));
                            var img = GraphicHelper.ScaleByPercent(System.Drawing.Image.FromStream(uploader.FileContent));
                            img.Save(imgSmall + string.Format("{0}_small{1}", ProductId, ext));
                            
                            // Формируются строки с путями к файлам для записи их в БД
                            imgBig = "/Images/products/big/" + string.Format("{0}_big{1}", ProductId, ext);
                            imgSmall = "/Images/products/small/" + string.Format("{0}_small{1}", ProductId, ext);
                            #endregion //Вариант с именем файла, равным ID товара

                            client.UpdateImageProduct(UserPrincipal.Current.UserId, ProductId, imgBig, imgSmall);

                            // Вызов функции закрытия окна
                            ScriptManager.RegisterStartupScript(this, this.GetType(), Guid.NewGuid().ToString(), "closeThisWindow('true');", true);
                        }
                        catch (Exception ex)
                        {
                        }
                        #endregion Сохранение нового файла
                    }
                }
            }
        }
    }
}